<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
// var a;
// console.log(a);
// a = 10;
// var a = 10;
// console.log(a);
// let 
// const
// console.log(a);
// let a = 10;
// const a = 10;
// a = 20;
// const obj = {
//     name:"张三",
//     age:20
// }
// // // obj = {
// // //     name:"李四"
// // // }
// // obj.name  = "李四";
// // console.log(obj);
// Object.freeze(obj);
// obj.name  = "李四";
// console.log(obj);

// var、let 及 const 区别？
// var 没有块级作用域  变量提升； window
// let 块级作用域 不会变量提升 不会通过window访问；不允许重复声明
// const  一旦声明就不允许更改 （注意下对象）;
// var a = 10;
// var a = 20;
// console.log(window.a);{}

// 解构赋值
// let obj = {
//     name:"张三",
//     age:20
// }
// let {name:myname,age} = obj;
// console.log(myname,age);

// 展开运算符
// let obj = {
//     name:"张三",
//     age:20
// }

// let newObj = {height:"178cm",...obj};
// console.log(newObj);
// 不定参数；
// funcs
// test(1,2,3);
// console.log(a);
// let a = 10;
// let myname = "name";
// let  obj = {
//     [document]:"张三"
// }
// for(let key in obj){
//     console.log(typeof key);
// }

// let map = new Map();
// map.set({},"value");
// console.log(map);

// 不能重复；
// let set = new Set([1,2,3,3,4,2]);
// console.log(set);

// Symbol 唯一标识符；
// let s1 = Symbol("key");
// let s2 = Symbol("key");
// console.log(s1===s2);
// let  user = {
//     [Symbol("key")]:"100kg",
//     name:"张三",
//     age:20
// }
// // console.log(user);
// console.log( Object.getOwnPropertySymbols(user));
// console.log(user[Object.getOwnPropertySymbols(user)[0]]);

// let cate = {
//     person:Symbol('person'),
//     animal:Symbol('animal')
// }

// function getCate(type){
//     if(type===cate.person){
//         console.log("人类");
//     }else if(type===cate.animal){
//         console.log("动物");
//     }
// }
// getCate(cate.animal);

// let f = function(v){
//     return v;
// }

// let f = v=>v;
// let f = ()=>{
//     return {name:"张三"};
// }
// let f = ()=>({name:"张三"});
// console.log( f());
// let name = "张三";
// let str =  `abcde${name}fg`;
// console.log(str);
// 说一下 ES6 对 Object 类型做了哪些优化更新?
// 声明方式
// let name = "张三";
// let age = 20;
// let obj = {name,age};
// // let obj = {name:name,age:age}
// console.log(obj);
// let obj = {
//     fn:function(){
//         console.log("fn");
//     }
// }
// let obj = {
//     fn(){
//         console.log("fn");
//     }
// }
// 新增的方法；
// Object.is Object.assign Object.getOwnPropertyDescriptor Object.keys(); Object.values()...





</script>
</html>